import { createApp } from 'vue'
import { createPinia } from 'pinia'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import App from './App.vue'
import router from './router'
import './style.css'
import { loadSceneConfig } from './utils/configLoader'

// 应用初始化函数
const initializeApp = async () => {
  try {
    // 预加载场景配置，确保 window.sceneConfig 在任何组件使用前就已设置
    console.log('正在预加载场景配置...')
    await loadSceneConfig()
    console.log('场景配置预加载完成，window.sceneConfig 已设置')
    
    // 创建 Vue 应用
    const app = createApp(App)

    // 注册所有图标
    for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
      app.component(key, component)
    }

    app.use(createPinia())
    app.use(router)
    app.use(ElementPlus)

    // 挂载应用
    app.mount('#app')
    
    console.log('应用启动完成')
  } catch (error) {
    console.error('应用初始化失败:', error)
    
    // 即使配置加载失败，也要启动应用（使用默认配置）
    const app = createApp(App)

    // 注册所有图标
    for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
      app.component(key, component)
    }

    app.use(createPinia())
    app.use(router)
    app.use(ElementPlus)

    app.mount('#app')
    
    console.log('应用以默认配置启动')
  }
}

// 启动应用
initializeApp()